home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / m68k / 68343ffp.arc / IEFFPI.SA < prev    next >
Text File  |  1989-08-30  |  4KB  |  79 lines

  1.         TTL       IEEE FORMAT EQUIVALENT FLOAT TO INTEGER (IEFFPI)
  2. **************************************
  3. * (C) COPYRIGHT 1981 BY MOTORLA INC. *
  4. **************************************
  5.  
  6. ***********************************************************
  7. *    IEFFPI - IEEE FORMAT EQUIVALENT FLOAT TO INTEGER     *
  8. *                                                         *
  9. *      INPUT:  D7 = IEEE FORMAT NUMBER                    *
  10. *      OUTPUT: D7 = FIXED POINT LONGWORD INTEGER          *
  11. *                            (2'S COMPLEMENT)             *
  12. *                                                         *
  13. *  CONDITION CODES:                                       *
  14. *             N - SET IF RESULT IS NEGATIVE               *
  15. *             Z - SET IF RESULT IS ZERO                   *
  16. *             V - SET IF RESULT OVERFLOWED INTEGER        *
  17. *                 REPRESENTATION OR INPUT WAS A NAN       *
  18. *                 (NOT-A-NUMBER)                          *
  19. *             C - UNDEFINED                               *
  20. *             X - UNDEFINED                               *
  21. *                                                         *
  22. *     REGISTERS ARE TRANSPARENT OVER THIS ROUTINE         *
  23. *                                                         *
  24. *              STACK USED:    54 BYTES                    *
  25. *                                                         *
  26. *  THE RANGE PROVIDED WITH 2'S COMPLEMENT LONGWORD BINARY *
  27. *  IS:   -2,147,483,649 < VALUE < +2,147,483,648          *
  28. *                                                         *
  29. *  NOTES:                                                 *
  30. *   1) SINCE IEEE SINGLE PRECISION FORMAT HOLDS 24 BITS   *
  31. *      OF PRECISION WHICH IS LESS THAN THE 31 BITS OF     *
  32. *      LONGWORD BINARY INTEGER ARITHMETIC, RESULTS OF     *
  33. *      OVER 24 BIT INTEGER MAGNITUDE WILL BE IMPRECISE    *
  34. *      AND HAVE LOW-END ZEROES.                           *
  35. *   2) IF THE INPUT ARGUMENT IS TOO LARGE TO BE CONTAINED *
  36. *      IN THE LONGWORD FIXED POINT BINARY FORMAT, THE     *
  37. *      LARGEST POSSIBLE MAGNITUDE VALUE IS RETURNED WITH  *
  38. *      THE "V" BIT SET IN THE CONDITION CODE REGISTER.    *
  39. *   3) IF A NAN (NOT-A-NUMBER) IS THE INPUT ARGUMENT,     *
  40. *      IT WILL BE RETURNED AS IS WITH THE "V" BIT SET.    *
  41. *   4) SINCE THE "V" BIT IS SET FOR TWO POSSIBLE          *
  42. *      CONDITIONS (OVERFLOW OR NAN) THEY CAN BE SEPARATED *
  43. *      BY TESTING THE SIGNIFICAND (BITS 0 THRU 22).  IF   *
  44. *      THESE BITS ARE ALL ONES, THEN THE VALUE PROBABLY   *
  45. *      WAS AN OVERFLOW.  ANY OTHER PATTERN INDICATES THE  *
  46. *      INPUT ARGUMENT WAS NAN.                            *
  47. *                                                         *
  48. ***********************************************************
  49.          PAGE
  50.          XDEF      IEFFPI    ENTRY POINT
  51.  
  52.         XREF       9:FFPFPI     FAST FLOATING POINT FLOAT TO INTEGER
  53.          XREF      9:FFPFIEEE  FFP CONVERSION OF IEEE TO FFP FORMAT
  54.          XREF      9:IEFSOP  IEEE SINGLE OPERAND CONVERT INTERNAL ROUTINE
  55.         XREF       FFPCPYRT   COPYRIGHT NOTICE
  56.  
  57. IEFFPI  IDNT      1,1  IEEE FORMAT EQUIVALENT FLOAT TO INTEGER
  58.  
  59.         SECTION    9
  60.  
  61. *************************
  62. * IEEE FLOAT TO INTEGER *
  63. *************************
  64. IEFFPI   BSR       IEFSOP    CONVERT TO FAST FLOATING POINT OR REJECT NAN
  65.          BRA.S     IEFNRM    +0 NORMALIZED VALUE, DENORMALIZED VALUE OR ZERO
  66. *                                       +2 ARGUMENT INFINITY
  67.  
  68. * INFINITY - CONVERT TO FFP FORMAT'S LARGEST MAGNITUDE
  69.          BSR       FFPFIEEE  FFP'S CONVERSION WILL FORCE TO HIGHEST POSSIBLE
  70.  
  71. * NORMALIZED VALUE, DENORMALIZED OR ZERO
  72. IEFNRM   BSR       FFPFPI    CONVERT FROM FAST FLOATING POINT TO INTEGER
  73.          MOVEM.L   (SP)+,D3-D6 RELOAD CALLERS REGISTERS
  74.          ADD.L     #4,SP     SKIP ORIGINAL ARGUMENT
  75.          RTS                 RETURN TO CALLER WITH INTEGER IN D7 AND CCR SET
  76.  
  77.          END
  78.  
  79.